package com.hp.snap.gr.model.jaxb;

import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;


/**
 * <p>Java class for GRMType complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained within this class.
 * <p/>
 * <pre>
 * &lt;complexType name="GRMType">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="Task" type="{}TaskType" maxOccurs="unbounded"/>
 *         &lt;element name="ActionPlan" type="{}ActionPlanType" maxOccurs="unbounded"/>
 *         &lt;element name="GeneralAction" type="{}GeneralActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="SCPToRemoteAction" type="{}SCPToRemoteActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="SCPFromRemoteAction" type="{}SCPFromRemoteActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="LocalShellAction" type="{}LocalShellActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="RemoteShellAction" type="{}RemoteShellActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="FileReplaceAction" type="{}FileReplaceActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="SNMPTrapAction" type="{}SNMPTrapActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="RESTfulInvokeAction" type="{}RESTfulInvokeActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="ExportVoltDBConfigurationAction" type="{}ExportVoltDBConfigurationActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="ExportMySqlDBAction" type="{}ExportMySqlDBActionType" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="ImportVoltDBConfigurationAction" type="{}ImportVoltDBConfigurationActionType" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 */
@XmlRootElement(name = "GRM")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "GRMType", propOrder = {
        "task",
        "actionPlan",
        "generalAction",
        "scpToRemoteAction",
        "scpFromRemoteAction",
        "localShellAction",
        "remoteShellAction",
        "fileReplaceAction",
        "snmpTrapAction",
        "resTfulInvokeAction",
        "exportVoltDBConfigurationAction",
        "exportMySqlDBAction",
        "importVoltDBConfigurationAction"
})
public class GRMType {

    @XmlElement(name = "Task", required = true)
    protected List<TaskType> task;
    @XmlElement(name = "ActionPlan", required = true)
    protected List<ActionPlanType> actionPlan;
    @XmlElement(name = "GeneralAction")
    protected List<GeneralActionType> generalAction;
    @XmlElement(name = "SCPToRemoteAction")
    protected List<SCPToRemoteActionType> scpToRemoteAction;
    @XmlElement(name = "SCPFromRemoteAction")
    protected List<SCPFromRemoteActionType> scpFromRemoteAction;
    @XmlElement(name = "LocalShellAction")
    protected List<LocalShellActionType> localShellAction;
    @XmlElement(name = "RemoteShellAction")
    protected List<RemoteShellActionType> remoteShellAction;
    @XmlElement(name = "FileReplaceAction")
    protected List<FileReplaceActionType> fileReplaceAction;
    @XmlElement(name = "SNMPTrapAction")
    protected List<SNMPTrapActionType> snmpTrapAction;
    @XmlElement(name = "RESTfulInvokeAction")
    protected List<RESTfulInvokeActionType> resTfulInvokeAction;
    @XmlElement(name = "ExportVoltDBConfigurationAction")
    protected List<ExportVoltDBConfigurationActionType> exportVoltDBConfigurationAction;
    @XmlElement(name = "ExportMySqlDBAction")
    protected List<ExportMySqlDBActionType> exportMySqlDBAction;
    @XmlElement(name = "ImportVoltDBConfigurationAction")
    protected List<ImportVoltDBConfigurationActionType> importVoltDBConfigurationAction;

    /**
     * Gets the value of the task property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the task property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getTask().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link TaskType }
     */
    public List<TaskType> getTask() {
        if (task == null) {
            task = new ArrayList<TaskType>();
        }
        return this.task;
    }

    /**
     * Gets the value of the actionPlan property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the actionPlan property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getActionPlan().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link ActionPlanType }
     */
    public List<ActionPlanType> getActionPlan() {
        if (actionPlan == null) {
            actionPlan = new ArrayList<ActionPlanType>();
        }
        return this.actionPlan;
    }

    /**
     * Gets the value of the generalAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the generalAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getGeneralAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link GeneralActionType }
     */
    public List<GeneralActionType> getGeneralAction() {
        if (generalAction == null) {
            generalAction = new ArrayList<GeneralActionType>();
        }
        return this.generalAction;
    }

    /**
     * Gets the value of the scpToRemoteAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the scpToRemoteAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSCPToRemoteAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link SCPToRemoteActionType }
     */
    public List<SCPToRemoteActionType> getSCPToRemoteAction() {
        if (scpToRemoteAction == null) {
            scpToRemoteAction = new ArrayList<SCPToRemoteActionType>();
        }
        return this.scpToRemoteAction;
    }

    /**
     * Gets the value of the scpFromRemoteAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the scpFromRemoteAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSCPFromRemoteAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link SCPFromRemoteActionType }
     */
    public List<SCPFromRemoteActionType> getSCPFromRemoteAction() {
        if (scpFromRemoteAction == null) {
            scpFromRemoteAction = new ArrayList<SCPFromRemoteActionType>();
        }
        return this.scpFromRemoteAction;
    }

    /**
     * Gets the value of the localShellAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the localShellAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getLocalShellAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link LocalShellActionType }
     */
    public List<LocalShellActionType> getLocalShellAction() {
        if (localShellAction == null) {
            localShellAction = new ArrayList<LocalShellActionType>();
        }
        return this.localShellAction;
    }

    /**
     * Gets the value of the remoteShellAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the remoteShellAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getRemoteShellAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link RemoteShellActionType }
     */
    public List<RemoteShellActionType> getRemoteShellAction() {
        if (remoteShellAction == null) {
            remoteShellAction = new ArrayList<RemoteShellActionType>();
        }
        return this.remoteShellAction;
    }

    /**
     * Gets the value of the fileReplaceAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the fileReplaceAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getFileReplaceAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link FileReplaceActionType }
     */
    public List<FileReplaceActionType> getFileReplaceAction() {
        if (fileReplaceAction == null) {
            fileReplaceAction = new ArrayList<FileReplaceActionType>();
        }
        return this.fileReplaceAction;
    }

    /**
     * Gets the value of the snmpTrapAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the snmpTrapAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSNMPTrapAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link SNMPTrapActionType }
     */
    public List<SNMPTrapActionType> getSNMPTrapAction() {
        if (snmpTrapAction == null) {
            snmpTrapAction = new ArrayList<SNMPTrapActionType>();
        }
        return this.snmpTrapAction;
    }

    /**
     * Gets the value of the resTfulInvokeAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the resTfulInvokeAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getRESTfulInvokeAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link RESTfulInvokeActionType }
     */
    public List<RESTfulInvokeActionType> getRESTfulInvokeAction() {
        if (resTfulInvokeAction == null) {
            resTfulInvokeAction = new ArrayList<RESTfulInvokeActionType>();
        }
        return this.resTfulInvokeAction;
    }

    /**
     * Gets the value of the exportVoltDBConfigurationAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the exportVoltDBConfigurationAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getExportVoltDBConfigurationAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link ExportVoltDBConfigurationActionType }
     */
    public List<ExportVoltDBConfigurationActionType> getExportVoltDBConfigurationAction() {
        if (exportVoltDBConfigurationAction == null) {
            exportVoltDBConfigurationAction = new ArrayList<ExportVoltDBConfigurationActionType>();
        }
        return this.exportVoltDBConfigurationAction;
    }

    /**
     * Gets the value of the exportMySqlDBAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the exportMySqlDBAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getExportMySqlDBAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link ExportMySqlDBActionType }
     */
    public List<ExportMySqlDBActionType> getExportMySqlDBAction() {
        if (exportMySqlDBAction == null) {
            exportMySqlDBAction = new ArrayList<ExportMySqlDBActionType>();
        }
        return this.exportMySqlDBAction;
    }

    /**
     * Gets the value of the importVoltDBConfigurationAction property.
     * <p/>
     * <p/>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the importVoltDBConfigurationAction property.
     * <p/>
     * <p/>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getImportVoltDBConfigurationAction().add(newItem);
     * </pre>
     * <p/>
     * <p/>
     * <p/>
     * Objects of the following type(s) are allowed in the list
     * {@link ImportVoltDBConfigurationActionType }
     */
    public List<ImportVoltDBConfigurationActionType> getImportVoltDBConfigurationAction() {
        if (importVoltDBConfigurationAction == null) {
            importVoltDBConfigurationAction = new ArrayList<ImportVoltDBConfigurationActionType>();
        }
        return this.importVoltDBConfigurationAction;
    }

}
